package br.infotec.musicaunb.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.search.annotations.DocumentId;
import org.springframework.data.jpa.domain.AbstractPersistable;

@Entity
@Table(name = "endereco")
public class Endereco extends AbstractPersistable<Long> implements AbstraticPojo {

	/**
	 * @author Denis
	 */
	private static final long serialVersionUID = 1L;
	
	// atributos relacionais
	private Cidade cidade;
	private String bairro;
	private Responsavel responsavel;
	private Professor professor;
	// atributos originais
	private String rua;
	private Integer numero;
	private String complemento;
		
	@Override
	@Column(name = "id_endereco")
	@GeneratedValue
	@DocumentId
	public Long getId() {
		return super.getId();
	}
	
	@ManyToOne
	@JoinColumn(name = "id_cidade")
	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}
	
	@Column(name = "bairro")
	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	
	@Column(name = "rua")
	public String getRua() {
		return rua;
	}

	public void setRua(String rua) {
		this.rua = rua;
	}
	
	@Column(name = "numero")
	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}
	
	@Column(name = "complemento")
	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	@OneToOne
	public Responsavel getResponsavel() {
		return responsavel;
	}

	public void setResponsavel(Responsavel responsavel) {
		this.responsavel = responsavel;
	}

	@OneToOne
	public Professor getProfessor() {
		return professor;
	}

	public void setProfessor(Professor professor) {
		this.professor = professor;
	}
}
